package com.ajie.mapper;

import com.ajie.entity.*;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 用户相关操作
 */
@Mapper
public interface SysUserMapper {

    /**
     * 查询用户信息
     * @return
     */
    List<SysUser> findAll();

    /**
     * 根据用户名获取用户对象
     * @param value
     * @return
     */
    SysUser findByUserName(@Param("value") String value);
    
    
    /**
     * 根据用户id获取用户对象
     * @param id
     * @return
     */
    SysUser findUserById(Long id);
    /********************************************************/
    
    
    /**
     * 根据用户Id查询用户角色信息
     * @param userId
     * @return
     */
    List<SysRole> findRoles(@Param("userId") Long userId);
    
    /**
     * 添加用户角色关联表信息
     * @param userId
     * @param roleId
     */
    void insertRoles(@Param("userId") Long userId,@Param("roleId") Long roleId);
    
    /**
     * 删除用户角色关联表信息
     * @param userId
     */
    void deleteRoles(Long userId);

    /**
     * 获取菜单信息
     */
    List<SysMenu> findMenus(@Param("userId") Long userId);

    /**
     * 获取子菜单信息
     */
    List<SysMenu> findChildrenMenus(@Param("id")  Long id ,@Param("userId") Long userId);

    /**
     * 获取权限数据
     * @param userId
     * @return
     */
    List<SysPermission> findPermissions(@Param("userId") Long userId);
    
    
    /***********************************************/
    
    
    /**
     * 添加用户信息
     */
    void insert(SysUser user);
    
    /**
     * 修改用户信息
     * @param user
     */
    void update(SysUser user);
    
    /**
     * 删除用户信息
     * @param id
     */
    void delete(Long id);
    
    /**
     * 分页查询
     * @param queryString
     * @return
     */
    Page<SysUser> findPage(String queryString);
    
  
    
    /**
     * 根据邮件修改密码
     * @param email
     * @param password
     */
    void updatePwdByMail(@Param("email") String email,@Param("password") String password);
    
   
    List<LookLikeFavourite> findLookLikeFavourite();
    
    void updateLookLikeFavourite(LookLikeFavourite lookLikeFavourite);
    
    List<LookLikeFavourite> findLookLikeFavouriteByReid(LookLikeFavourite lookLikeFavourite2);
    
    void delLookLikeFavourite();
    
    void insertLookLikeFavouriteByReid(LookLikeFavourite lookLikeFavourite1);
    
    Page<SysUser> findExpert(String queryString);
    
    void reset();
}
